为matplotlib创建自定义colormap

您所在的位置:网站首页 matplotlib colormap颜色与数值的对应关系 为matplotlib创建自定义colormap

为matplotlib创建自定义colormap

#为matplotlib创建自定义colormap| 来源: 网络整理| 查看: 265

朋友们在用Python上画图的时候,讲究点必然是需要为数据点添加合适的颜色的。

先上一个简单的示例数据,接下来的例子我都只画散点图(scatter)啦。

随便生成一百个点的x和y轴坐标

一般来说(我只知道)我们有两种给点上色的情况:

明确知道每个点应该是什么颜色

我一时半会儿能想到的一个应用场景是:

在对数据集做了聚类,获得了对每一个点的类别标签(label of clustering)后,然后我们希望把这个标签通过颜色体现在图中。

不过这次准备的示例数据好像不适合做聚类什么的…

那我们就说,我认为坐标为奇数的点都该是红的,坐标是偶数的点都该是蓝的~

为此你需要准备一个列表(或者numpy.ndarray或者pandas.core.series.Series之类的),里面是“红蓝红蓝红蓝…”,然后把这个列表交给“color”这一参数。

用示例数据画散点图,设置颜色,最后显示通过对每个点设置对应颜色的效果

(当然你也可以直接给一个代表颜色的字符串给“color”,这样同一行命令里涉及到的所有点都是同一个颜色;然后再画第二批点,给他们全部设置另一种颜色。)

利用颜色体现数据点的其他连续值属性

小标题稍微有点没说人话…“连续值”(continuous)这里是说“离散值”(discrete)和“类别值”(categorical)的相对概念,也就是说体现这种属性的数字,他不表示“1号”“2号”这样的整数,而是“0.23333mL”“2.3333333m”这样的精确数值。这里我专业上有个很典型的应用场景:

生物信息学中,当我们获得一组样品的基因表达量矩阵后,我们通常会通过降维算法(如PCA)来实现数据的可视化,从而直观观察样品点之间的距离关系。此时我们会希望通过数据点的颜色来体现某一目的基因的表达量高低,以此直观地了解该基因在不同样品中的表达情况。

这是我们需要做的是,把包含了这样数值的一维列表(或者类似的迭代器)交给“c”这个参数,这样Matplotlib便会通过渐变色的形式为你输入的值分配合适的颜色。Matplotlib自带了很多配色方案,我们可以通过”cmap“这一参数来进行选择。

随便搞一份连续值“c”,重画张图设置上颜色,再选个名字好听的配色萌萌的分段上色

对不起例子不好,如果不设置“cmap”,默认配色是这样的:

最大值黄色,最小值紫色,中间渐变

总之Matplotlib有超多的配色方案,你可以运行“dir(matplotlib.cm)”来看看都有些啥。

我就是想自定义超多颜色就是不想用别人设好的

我就是小标题里这种人。来,点这里。大概就是我自己写了个函数,你可以输入你想要的颜色和渐变区间,他会返回一个Matplotlib.colors.ListedColormap实例,画图时你只需把这个实例交给“cmap”参数,就可以看到想要的配色啦。

引入我写的函数,创立一个三等分配色,和另一个按比例乱分的四色配色,各拿来画张子图

颜色正是正了点,但我自由了

原文上传于我的个人博客:Create Colormap (cmap) for Matplotlib  复制示例代码去那边。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3